Logic analyzers are commonly used today to analyze the digital signals generated within a circuit. A logic analyzer performs a number of functions, including acquiring and storing signals generated by logic within the circuit under test. One particular use of an analyzer is to monitor the instructions of a microprocessor within a circuit and data generated therewith to determine if the circuit is operating as desired.
In one aspect of its monitoring operation, the analyzer acts as a data acquisition system to acquire and store in memory data "clustered" around an event, i.e., data occurring before and after the event. The data is first continuously acquired and stored until an event occurs. With a limited size acquisition memory, the continuous storage of new data will cause the memory to "roll over" if no event occurs and is stored before the memory reaches its maximum address. Once it rolls over, data is written over previously acquired data until an event terminates the acquisition. The event itself is then stored in memory and data occurring after the event is acquired and stored until the memory reaches its maximum address. The event is therefore stored at an intermediate memory address with data clustered around it at adjacent addresses.
The primary drawback of conventional data acquisition systems is the limited clustering available. Only data clustered around a single event can be permanently stored, regardless of the acquisition memory size. To store data surrounding several events, the acquisition system must be continuously reset after each acquisition. Data can be lost if several events of interest occur so rapidly in sequence that the acquisition memory cannot be cleared fast enough to accept new data.
A second drawback of conventional data acquisition systems is the unbalanced acquisition of data clustered around an event. The event may be stored at any intermediate memory address, close to or far from a memory boundary. Several data samples may be stored before the event and many more than are useful stored afterward. The problem is compounded because the after-acquired data may be written over previously acquired data of substantial value.
A data acquisition system that overcomes these drawbacks should provide for multiple clustering of events and data within an acquisition memory so that a number of events and their data can be acquired and permanently stored. The system should also provide as much as possible for a balanced acquisition of data before and after each event. A balance ensures that sufficient data is acquired for analysis of the test circuit's operation.